/**
 * GTActivityNotifier.m
 *
 * The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License");
 * you may not use this file except in compliance with the License. You may obtain a copy of the License 
 * at http://www.mozilla.org/MPL/
 * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
 * either express or implied. See the License for the specific language governing rights and limitations 
 * under the License.
 *
 * The Original Code is gcast-toolbox4iphone.
 *
 * The Initial Developers of the Original Code is Giannandrea Castaldi.
 */

#import "GTActivityNotifier.h"
#import "GTActivityViewController.h"

static GTActivityViewController *singleton;

@implementation GTActivityNotifier

+ (void)notifyStartActivity {
  @synchronized(self) {
    if (singleton) {
      [GTActivityNotifier notifyEndActivity];
    }
    singleton = [[GTActivityViewController viewController] retain];
    [singleton notifyStartActivity];
  }
}

+ (void)notifyStartActivityWithAlpha:(CGFloat)alpha {
  @synchronized(self) {
    if (singleton) {
      [GTActivityNotifier notifyEndActivity];
    }
    singleton = [[GTActivityViewController viewController] retain];
    [singleton notifyStartActivityWithAlpha:alpha];
  }
}

+ (void)notifyMessage:(NSString*)aMessage {
  @synchronized(self) {  
    [singleton performSelectorOnMainThread:@selector(notifyMessage:) withObject:aMessage waitUntilDone:YES];
  }
}

+ (void)notifyMessageToConfirm:(NSString*)aMessage {
  @synchronized(self) {  
    [singleton performSelectorOnMainThread:@selector(notifyMessageToConfirm:) withObject:aMessage waitUntilDone:YES];
  }
}

+ (void)notifyEndActivity {
  @synchronized(self) {  
    [singleton performSelectorOnMainThread:@selector(notifyEndActivity) withObject:nil waitUntilDone:YES];
    [singleton performSelectorOnMainThread:@selector(release) withObject:nil waitUntilDone:YES];
    singleton = nil;
  }
}

@end
